﻿#coding:utf-8

import cgi
import datetime
import urllib
import webapp2

from google.appengine.ext import db
from google.appengine.api import users

class Greeting(db.Model):
	author = db.StringProperty()
	content = db.StringProperty(multiline=True)
	date = db.DateTimeProperty(auto_now_add=True)
	
def guestbook_key(guestbook_name=None):
	return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook')
	
class MainPage(webapp2.RequestHandler):
	def get(self):
		self.response.out.write('<html><body>')
		guestbook_name=self.request.get('guestbook_name')
		
		greetings = db.GqlQuery("SELECT * "
								"FROM Greeting "
								"WHERE ANCESTOR IS :1 "
								"ORDER BY date DESC LIMIT 10",
								guestbook_key(guestbook_name))
								
		for greeting in greetings:
			if greeting.author:
				self.response.out.write(
					'<b>%s</b> wrote:'  % greeting.author)
			else:
				self.response.out.write('An anonymous person wrote:')
				
			self.response.out.write('<blockquote>%s</blockquote>' % cgi.escape(greeting.content) )
		
		self.response.out.write("""
			  <form action="/sign?%s" method="post">
				<div><textarea name="content" rows="3" cols="60"></textarea></div>
				<div><input type="submit" value="Sign Guestbook"></div>
			  </form>
			  <hr>
			  <form>Guestbook name: <input value="%s" name="guestbook_name">
			  <input type="submit" value="switch"></form>
			</body>
		  </html>""" % (urllib.urlencode({'guestbook_name':guestbook_name}),cgi.escape(guestbook_name)))
		  
class Guestbook(webapp2.RequestHandler):
	def post(self):
		guestbook_name = self.request.get('guestbook_name')
		greeting = Greeting(parent=guestbook_key(guestbook_name))
		
		if users.get_current_user():
			greeting.author = users.get_current_user().nickname()
			
		greeting.content = self.request.get('content')
		greeting.put()
		self.redirect('/?' + urllib.urlencode({'guestbook_name':guestbook_name}))
			
	
app = webapp2.WSGIApplication([('/',MainPage),
							  ('/sign',Guestbook)],
							  debug=True)
	